import axios from "axios";
import { ElMessage } from "element-plus";
import { useUserStore } from "@/stores/userStore";
// 创建axios实例
const instance = axios.create({
  baseURL: "http://localhost:8080",
  // timeout: 5000,
});
const userStore = useUserStore();
// axios请求拦截器
instance.interceptors.request.use(
  (config) => {
    if (userStore.getToken) config.headers["token"] = userStore.getToken();
    return config;
  },
  (e) => Promise.reject(e)
);

// axios响应式拦截器
instance.interceptors.response.use(
  (res) => {
    if (res.data.code === 0) {
      ElMessage.error(res.data.msg);
      return Promise.reject(res.data.data);
    }
    return res.data;
  },
  (error) => {
    // 统一处理错误
    if (error.response) {
      const { status, data } = error.response;

      // 401 未授权
      if (status === 401) {
        ElMessage.warning("请先登录");
        // 可以在这里跳转到登录页
        // router.push('/login');
        userStore.removeToken();
        userStore.removeUser();
      }

      // 其他错误
      else if (data && data.code === 0) {
        ElMessage.error(data.msg);
      }

      // 未知错误
      else {
        ElMessage.error("请求失败，请稍后重试");
      }
    } else if (error.request) {
      // 请求未收到响应
      ElMessage.error("网络错误，请检查网络连接");
    } else {
      // 其他错误
      ElMessage.error("请求失败，请稍后重试");
    }

    return Promise.reject(error);
  }
);

export default instance;
